The present invention relates to methods of transmitting “streaming data”, such as video or audio content, to multiple clients. In particular, the present invention provides a method of reducing the delivery costs associated with transmitting such data by selectively caching some of the content at regional servers close to the clients.
“Streaming data” is data that a client will process sequentially as it is received during a transmission, under a timeliness constraint requiring a minimum rate of progress in the reception of the data.
Examples of continuous media programs are video and audio programs, including movies, television shows, news clips, product advertisements, medical or recreational information or educational programs. This list of examples is not exhaustive.
“On-demand delivery” of streaming data is the delivery of streaming data triggered by client requests for that data, rather than simply by reaching a previously defined point in time. For example, in a video on-demand (VOD) system a customer might be able to request a video program at any time, with the expectation that the video would be viewable within a small time following the request.
Programs of streaming data may be stored at and transmitted from a server to clients via phone lines, cable, broadcast radio, satellite links or other media. The server may be a single machine or a set of machines that together provide a service.
For popular programs, many new requests may arrive at the server during a delivery period. In response to these requests, the server may make a separate transmission of data to each consumer. This approach is simple and works with standard receiving devices (e.g., television sets) but has the disadvantage of requiring a large number of transmission channels, one for each starting time where a request has been received. For this simple scheme, the bandwidth (e.g., number of channels) required to serve requests increases linearly with the number of starting times required and thus does not scale well to large numbers of starting times where requests will be received.
In order to reduce the bandwidth used to transmit the popular programs, the server might employ one of the multicast transmission methods described below. A key observation about each of these multicast methods is that if the program is popular, the server transmits earlier portions of each popular program more frequently than later portions of the program.